package com.micro.school.system.api.domain.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.micro.school.common.core.annotation.Excel;
import com.micro.school.common.core.web.domain.BaseEntity;
import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 支付单对象 pay_student_fee_payment
 * 
 * @author lyb
 * @date 2025-08-19
 */
@Data
public class PayStudentFeePaymentVos extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** $column.columnComment */
    private Integer id;

    /** 支付单号 */
    @Excel(name = "支付单号")
    private String payNo;

    /** 学生收费管理/订单ID */
    private Long studentFeeId;

    /** 账单号/订单号 */
    @Excel(name = "账单号/订单号")
    private String billNo;

    /** 学生id */
    @Excel(name = "学生id")
    private Long studentId;

    /** 学生姓名 */
    @Excel(name = "学生姓名")
    private String studentName;

    /** 校区ID */
    private Long campusId;

    /** 校区名称 */
    @Excel(name = "校区名称")
    private String campusName;

    /** 学院ID */
    private Long collegeId;

    /** 学院名 */
    @Excel(name = "学院名")
    private String collegeName;

    /** 模式ID */
    private Long modelId;

    /** 模式名 */
    @Excel(name = "模式名")
    private String modelName;

    /** 专业ID */
    private Long majorId;

    /** 专业名 */
    @Excel(name = "专业名")
    private String majorName;

    /** 学制 */
    @Excel(name = "学制")
    private String studyPeriod;

    /** 年级id */
    private Long gradeId;

    /** 年级名 */
    @Excel(name = "年级名")
    private String gradeName;

    /** 收费学年ID */
    @Excel(name = "收费学年ID")
    private Long feeYearId;

    /** 收费学年名称 */
    @Excel(name = "收费学年名称")
    private String feeYear;

    /** 应支付总金额/订单金额 */
    @Excel(name = "应支付总金额/订单金额")
    private BigDecimal totalAmount;

    /** 预缴费抵扣金额 */
    @Excel(name = "预缴费抵扣金额")
    private BigDecimal prepaymentDeducted;

    /** 使用的预缴记录ID */
    @Excel(name = "使用的预缴记录ID")
    private String usedPrepaymentId;

    /** 应通过第三方支付的金额 */
    @Excel(name = "应通过第三方支付的金额")
    private BigDecimal actualAmount;

    /** 实际支付金额（第三方成功到账金额） */
    @Excel(name = "实际支付金额", readConverterExp = "第=三方成功到账金额")
    private BigDecimal paidAmount;

    /** 支付方式: 10微信,20支付宝 */
    @Excel(name = "支付方式: 10微信,20支付宝")
    private Long payMethod;

    /** 支付渠道 */
    @Excel(name = "支付渠道")
    private String payChannel;

    /** 支付状态: 10待支付,20支付中,30支付成功,40支付失败,50已退款 */
    @Excel(name = "支付状态: 10待支付,20支付中,30支付成功,40支付失败,50已退款")
    private Long payStatus;

    /** 是否退款: 2否 1是 */
    @Excel(name = "是否退款: 2否 1是")
    private String refundedStatus;

    /** 退款金额 */
    @Excel(name = "退款金额")
    private BigDecimal refundedAmount;

    /** 第三方支付流水号 */
    @Excel(name = "第三方支付流水号")
    private String transactionId;

    /** 退款时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "退款时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date refundedTime;

    /** 支付回调时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "支付回调时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date callbackTime;

    /** 客户端IP */
    @Excel(name = "客户端IP")
    private String clientIp;

    /** 租户id */

    private Long tenantId;

    /** $column.columnComment */
    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
    private Date createTime;

    /** $column.columnComment */
    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
    private Date updateTime;

    /** 身份证号 */
    @Excel(name = "身份证号")
    private String idNumber;

    private List<PayStudentFeePaymentDetailVos> details;
}
